class InterceptorManager {
	constructor() {
		this.handlers = []
	}

	/**
	 * 创建拦截器
	 * @param {Function} fulfilled 成功回调
	 * @param {Function} rejected 失败回调
	 */
	use(fulfilled, rejected) {
		this.handlers.push({
			fulfilled,
			rejected
		})
		return this.handlers.length - 1
	}

	/**
	 * 取消单个拦截器
	 * @param {Number} index 下标
	 */
	eject(index) {
		if (this.handlers[index]) {
			this.handlers[index] = null
		}
	}

	/**
	 * 取消所有拦截器
	 */
	clear() {
		this.handlers = []
	}

	/**
	 * 遍历拦截器
	 * @param {Function} fn 回调方法
	 */
	forEach(fn) {
		this.handlers.forEach((handler) => {
			if (handler) {
				fn(handler)
			}
		})
	}
}

export default InterceptorManager;